#!/usr/bin/python
# -*- coding: utf-8 -*-

"""
"""

import urllib2
import re
from optparse import OptionParser
from urllib import urlencode

def parse_google_dict(page):
    """
    Извлекает перевод и похожие фразы
    """    
    # парсинг переводов
    translations = re.findall(r"<span class=\"mn\">([^<]+)<", page)
    if len(translations) == 0:
        print "There is no translations"
        exit()
    # печать переводов
    for t in translations:
        print t.strip()

def translate(direction, word):
    """
    
    @param string direction направление перевода, формат - l1|l2, где l1 и l2 - краткие обозначения языков
    @param string word
    """
    
    try:
        response = urllib2.urlopen("http://www.google.com/dictionary?aq=f&"+urlencode({"langpair": direction, "q": word, "hl": "ru"})).read().decode("utf8")
    except Exception, e:
        print e
    # переведен ли текст ?
    if response.find(u"В словаре отсутствует") != -1:
        print "There is no such a word in the dictionary"
        exit()
    parse_google_dict(response)

def main():
    """
    Основная функция скрипта. Парсит командную строку и задает дефолтные параметры для перевода
    """
    
    # подготовка к парсингу командной строки
    usage = "usage: google_dict [options] word"
    parser = OptionParser(usage=usage)
    # добавляем нужные опции
    parser.add_option("-d", "--direction", action="store", dest="direction", help="language pair, equal to en-ru by default")
    opt, arg = parser.parse_args()
    # вытаскиваем слово
    try:
        word = arg[0]
    except IndexError:
        # слово для перевода - обязательный аргумент
        parser.print_help()
        print "*** Word is required"
        exit()
    # вытаскиваем направление перевода
    if opt.direction != None:
        direction = opt.direction.replace("-", "|")
    else:
        direction = "en|ru"
    # переводим слово
    translate(direction, word)   
    
if __name__ == "__main__":
    main()

